package hm;

import java.io.*;

public class Finding {

    private static int total ;

    public static void main(String[] args) {

        search(new File("D:\\javajhx"));
        int other = 1040;
        System.out.println("总行数："+(total));
    }

    //递归
    public static void search(File file){
        //判断文件不为空
        if(file != null){
            //判断目录还是文件
            if(file.isDirectory()){ //目录
                //获取当前目录下所有文件或目录
                File[] files = file.listFiles(new FileFilter() { //过滤器，
                    @Override
                    public boolean accept(File path) {
                        if (path.isDirectory() || path.getName().endsWith(".java")) {
                            return true;
                        }
                        return false;
                    }
                });
                //遍历
                if(files != null){
                    for (File file1 : files) {
                        search(file1);
                    }
                }
            }else{
                int count = getCount(file);
                total += count;
                System.out.println(file.getAbsolutePath()+"当前文件代码行数："+count);
            }
        }
    }

    //代码行数
    public static int getCount(File file){
        int row  = 0 ;
        try {
            //创建输入流
            Reader rd = new FileReader(file);
            BufferedReader br =  new BufferedReader(rd);

            String data = null;
            while((data = br.readLine()) != null){
                //包含
                row ++;
            }
            br.close();
            rd.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return row;
    }

    //扫描目录下所有文件，找出所有内容中包含指定字符串的文件。
    public static boolean getContent(File file,String key){
        try {
            //创建输入流
            Reader rd = new FileReader(file);
            BufferedReader br =  new BufferedReader(rd);

            String data = null;
            while((data = br.readLine()) != null){
                //包含
                if(data.contains(key)){
                    return true;
                }
            }
            br.close();
            rd.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
}
